import http from '@utils/request'
// 获取用户列表
export const userPage = async (params: IUsersList): Promise<IUserListRes> => {
  return await http.get<IUserListRes>('/system/user/page', { params })
}
// 删除用户列表
export const userDel = async (id: string): Promise<userdels> => {
  return await http.get<userdels>(`/system/user/delete/${id}`)
}

//
interface userdels {
  code: number
  msg: string
  data: null
}
// 机构列表
export const unitList = (): Promise<IUnitListData> => {
  return http.get<IUnitListData>('/system/unit/list')
}

// 岗位列表
export const postPage = (): Promise<IPostPageData> => {
  return http.get<IPostPageData>('/system/post/page')
}

// 获取角色列表
export const rolePage = (): Promise<IroleApiResponse> => {
  return http.get<IroleApiResponse>('/system/role/page')
}

// 添加用户列表
export const UserAdd = async (data: IUser): Promise<IUserAdd> => {
  return await http.post<IUserAdd>('/system/user/add', data)
}

export interface IUsersList {
  current: string
  size: string
  username?: string
  realName?: string
  email?: string
  phone?: string
  gender?: string
  enabled?: string
  unitId?: string
}

export interface Record {
  id: string
  username: string // 用户名
  realName: string // 真实姓名
  userType: number // 用户类型（0：普通账号；1：超级管理员）
  email: string // 用户邮箱
  phone: string // 手机号码
  gender: number // 用户性别（1：男；2：女；0：未知）
  avatar: string // 头像路径
  enabled: number // 帐号状态（0：禁用；1：正常）
  delFlag: number // 是否删除（0：有效；1：删除）
  loginIp: string // 最后登陆IP
  loginDate: number // 最后登陆时间
  createBy: null | string
  createTime: number
  updateBy: string
  updateTime: number
  remark: null | string // 备注
}

export interface IUserListData {
  records: Record[]
  total: number
  size: number
  current: number
  orders: any[]
  optimizeCountSql: boolean
  searchCount: boolean
  countId: null
  maxLimit: null
  pages: number
}

export interface IUserListRes {
  code: string
  msg: string
  data: IUserListData
}

export interface IUnitList {
  address: string
  code: string
  codeseq: string
  contact: string
  createBy: string
  createTime: number
  delFlag: number
  email: string
  enabled: number
  id: string
  leaderId: string | null
  mobile: string
  name: string
  parentId: string
  system: number
  updateBy: string | null
  updateTime: number | null
  web: string
}

export interface IUnitListData {
  code: string
  msg: string
  data: IUnitList[]
}

// 定义岗位记录的接口
export interface IPostPage {
  id: string // 岗位 ID
  postName: string // 岗位名称
  postCode: string // 岗位编码
  sort: number // 排序
  enabled: number // 是否启用（1：启用；0：禁用）
  remark: null | string // 备注
  createBy: null | string // 创建人
  createTime: null | string // 创建时间
  updateBy: null | string // 更新人
  updateTime: null | string // 更新时间
}

interface IPostPageData {
  code: string // 响应状态码
  msg: string // 响应消息
  data: {
    records: IPostPage[] // 岗位记录数组
    total: number // 总记录数
    size: number // 每页大小
    current: number // 当前页码
    orders: any[] // 排序信息
    optimizeCountSql: boolean // 是否优化计数 SQL
    searchCount: boolean // 是否搜索计数
    countId: null | string // 计数 ID
    maxLimit: null | number // 最大限制
    pages: number // 总页数
  }
}

export interface IRole {
  id: string
  roleName: string
  rolePerm: string
  unitId: string
  dataPrivileges: number
  enabled: number
  createBy: string | null
  createTime: number | null
  updateBy: string | null
  updateTime: number | null
  descript: string | null
}

export interface IroleApiResponse {
  code: string
  msg: string
  data: {
    records: IRole[]
    total: number
    size: number
    current: number
    orders: any[]
    optimizeCountSql: boolean
    searchCount: boolean
    countId: string | null
    maxLimit: number | null
    pages: number
  }
}

// 用户列表添加
export interface IUser {
  username?: string // 用户名
  password?: string // 密码
  realName?: string // 真实姓名
  email?: string // 邮箱
  gender?: string // 用户性别（1：男；2：女；0：未知）
  avatar?: string | null // 头像
  remark?: string | null // 备注
  phone?: string // 手机号
  enabled?: string // 帐号状态（0：禁用；1：正常）
  roleIds?: string[] // 角色
  postIds?: string[] // 岗位
  unitId?: string // 机构 ID
}

interface IUserAdd {
  code: string
  msg: string
  data: null
}
